SPSS 缺失值教程
作者:Ruben Geert van den Berg,发表于 基础 目录下
目录
什么是SPSS中的“缺失值”?
在 SPSS 中,“缺失值 (Missing Values)” 可能指以下两种情况:
- 系统缺失值 (System Missing Values) 是指数据中完全不存在的值。它们在 数据视图 (Data View) 中显示为句点 “.”。
- 用户缺失值 (User Missing Values) 是指在分析或编辑数据时被排除在外的数值。SPSS 用户可以指定哪些值(如果有)需要被排除。
本教程将引导你了解这两种缺失值。我们将使用 bank.sav 数据集(部分如下所示)作为示例。如果你在下载并打开此文件后,亲自尝试这些示例,你将从本教程中获得最大的收获。
SPSS 系统缺失值
系统缺失值是指数据中完全不存在的值。系统缺失值在数据视图中显示为点,如下图所示。
系统缺失值仅出现在数值型变量中。字符串变量 (String variables) 不会有系统缺失值。数据可能包含系统缺失值的原因有以下几点:
- 由于问卷的逻辑,某些受访者 没有被问到 某些问题;
- 受访者 跳过 了一些问题;
- 转换或 编辑 数据时出现错误;
- 由于设备 故障,某些值未被记录。
在某些情况下,系统缺失值是完全合理的。例如,如果我问“你是否有车?”,某人回答“没有”。那么,我的调查软件应该跳过下一个问题:“你的车是什么颜色?” 在数据中,我们可能会看到对于 没有 车的人,颜色这一项是系统缺失值。这些缺失值是完全合理的。
但在其他情况下,可能不清楚为什么你的数据中存在系统缺失值。可能发生了一些错误,也可能没有。因此,你应该尝试找出 为什么 某些值是系统缺失的,特别是当有很多缺失值的时候。
那么,如何检测和处理数据中的缺失值呢?在了解第二种类型的缺失值之后,我们将讨论这个问题。
SPSS 用户缺失值
用户缺失值是指在分析或编辑数据时被排除的值。“用户”指的是 SPSS 的用户。嘿,那就是你!因此,可能需要 你 将某些值设置为用户缺失值。那么,哪些值(如果有)必须被排除?简而言之:
- 对于类别变量,诸如“不知道”或“没有回答”之类的答案通常会从分析中排除。
- 对于度量变量,不太可能的值(例如 50 毫秒的反应时间或 9,999,999 欧元的月薪)通常被设置为用户缺失值。
对于 bank.sav 数据集,尚未设置任何用户缺失值,如变量视图中所见。
现在让我们看看是否应该将任何值设置为用户缺失值,以及如何设置。
类别变量的用户缺失值
检查类别变量的一种快速方法是运行频率分布和相应的条形图。确保输出表显示值和值标签。执行此操作的最简单方法是 运行以下语法。
***在后续输出中同时显示值和值标签。**
set tnumbers both.
***q1 的基本频率表。**
frequencies q1 to q9.
结果
首先要注意的是,q1 是一个有序变量:值越高表示同意程度越高。但是,11 不适用:“没有回答”并不比 10(“完全同意”)表示更多的同意。因此,只有 1 到 10 的值构成有序变量,11 应该被排除。
以下语法显示了正确的方法:
***将 11 设置为 q1 的用户缺失值。**
missing values q1 to q9 (11).
***重新运行频率表。**
frequencies q1 to q9.
结果
请注意,11 现在显示在缺失值中。它在 q1 中出现 6 次,并且还有 14 个系统缺失值。在变量视图中,我们还看到 11 被设置为 q1 到 q9 的用户缺失值。
度量变量的用户缺失值
检查度量变量的正确方法是运行直方图。以下语法显示了最简单的方法:
***运行每周工作时长的基本直方图。**
frequencies whours
/format notable
/histogram.
结果
一些受访者报告每周工作超过 150 小时。也许这些是他们的每月工作时长,而不是每周工作时长。无论如何,这样的值是不可信的。因此,我们将所有每周工作 50 小时或更长时间的值设置为用户缺失值。这样做之后,剩余值的分布看起来是合理的。
***将每周 50 小时或更长时间设置为用户缺失值。**
missing values whours (50 thru hi).
***重新运行直方图。**
frequencies whours
/format notable
/histogram.
检查每个变量的缺失值
检查每个变量的(系统和用户)缺失值的一种超快速方法是运行基本的 DESCRIPTIVES
表。在此之前,请确保你没有打开任何 WEIGHT 或 FILTER 。你可以通过运行 SHOW WEIGHT FILTER N
来检查这一点。另请注意,这些数据中有 464 个案例。现在让我们检查描述性统计数据。
***检查每个变量的缺失值。**
descriptives q1 to q9.
***注意:(464 - N) = 缺失值的数量。**
结果
N 列显示每个变量的非缺失值的数量。由于我们总共有 464 个案例,因此 (464 - N) 是每个变量的缺失值数量。如果任何变量的缺失百分比很高,你可能需要将其从(特别是)多变量分析中排除。
重要的是,请注意 Valid N (listwise) = 309。这些是没有所有变量的任何缺失值的案例。某些过程将仅使用这 309 个案例,这在 SPSS 中被称为 listwise exclusion(列表删除)。
结论:我们的任何变量(数据视图中的单元格列)都没有很高的缺失百分比。现在让我们看看是否有任何案例(数据视图中的单元格行)有很多缺失值。
检查每个案例的缺失值
为了检查是否有任何案例有很多缺失值,我们将创建一个新变量。此变量保存我们在想要一起分析的一组变量上的缺失值数量。在下面的示例中,这将是 q1 到 q9。
我们将使用一个简短而简单的变量名:mis_1
就可以了。只需确保添加对其内容的描述(缺失值的数量…)作为变量标签。
***创建新变量,保存 q1 到 q9 上的缺失值数量。**
count mis_1 = q1 to q9 (missing).
***将 mis_1 的描述设置为变量标签。**
variable labels mis_1 'Missing values over q1 to q9'.
***检查缺失值的频率分布。**
frequencies mis_1.
结果
在此表中,0 表示 q1 到 q9 上没有缺失值。这适用于 309 个案例。这是我们在之前的描述性统计表中看到的 Valid N (listwise) 。
另请注意,1 个案例在 9 个变量中有 8 个缺失值。我们可能怀疑该受访者是否认真填写了问卷。也许我们最好将其从 q1 到 q9 的分析中排除。正确的方法是使用 FILTER。
使用缺失值进行 SPSS 数据分析
那么,如果数据包含缺失值,SPSS 如何分析数据?嗯,在大多数情况下,SPSS 会对它可以使用的所有案例运行每个分析。现在我们的数据包含 464 个案例。但是,由于缺失值,大多数分析无法使用所有 464 个案例。哪些案例被删除取决于我们在哪些变量上运行哪些分析。
因此,一个重要的最佳实践是始终检查实际用于每个分析的案例数量。这并不总是你可能期望的。让我们首先看看缺失值的 pairwise exclusion(成对删除)。
缺失值的成对删除
让我们检查 q1 到 q9 之间的所有 (Pearson) 相关性。最简单的方法是运行 correlations q1 to q9
。如果我们这样做,我们会得到下表所示的表。
请注意,每个相关性都基于不同数量的案例。准确地说,变量对之间的每个相关性都使用在这两个变量上具有有效值的所有案例。这被称为缺失值的 pairwise exclusion(成对删除)。请注意,大多数相关性基于大约 410 到 440 个案例。
缺失值的列表删除
现在,让我们在我们的最小语法中添加一行后,重新运行相同的相关性:correlations q1 to q9 /missing listwise
。运行它之后,我们得到一个较小的相关矩阵,如下所示。它不再包括每个相关性的案例数量。
每个相关性都基于相同的 309 个案例,即 listwise N 。这些是没有表中 所有 变量(q1 到 q9)缺失值的案例。这被称为缺失值的 listwise exclusion(列表删除)。
显然,列表删除通常比成对删除使用的案例少得多。这就是为什么我们经常推荐后者:我们希望尽可能多地使用案例。但是,如果存在许多缺失值,成对删除可能会导致计算问题。无论如何,请确保你知道你的分析是使用缺失值的列表删除还是成对删除。默认情况下,回归 和 因子分析 使用列表删除,在大多数情况下,这 不是 你想要的。
逐个分析排除缺失值
分析两个变量是否相关称为双变量分析。这样做时,SPSS 只能使用在这两个变量上具有有效值的案例。有道理,对吧?
现在,如果你一次运行多个双变量分析,你可以逐个分析排除案例:每个单独的分析都使用它可以使用的所有案例。不同的分析可以使用不同的案例子集。
如果你不想这样做,你可以选择 列表删除:每个分析仅使用在 所有 分析的所有变量上没有缺失值的案例。下图说明了 ANOVA 的这种情况。
q1 和 educ 的检验使用在 q1 和 educ 上具有有效值的所有案例,无论 q2 到 q4 如何。
所有检验仅使用在 q1 到 q4 和 educ 上没有缺失值的案例。
我们通常希望尽可能多地使用案例进行每个分析。因此,我们更喜欢逐个分析排除案例。但无论你选择哪种方式,请确保你知道每个分析使用了多少案例。因此,请仔细检查你的 输出。Kolmogorov-Smirnov 检验 在这方面尤其棘手:默认情况下,一个选项逐个分析排除案例,另一个选项使用列表删除。
编辑带有缺失值的数据
编辑带有缺失值的数据可能很棘手。不同的命令和函数在这种情况下表现不同。即使像 在 SPSS 中计算均值 这样基本的事情,如果你不知道这一点,也可能会出错。
以下语法显示了我们有时会遇到的 3 种方法。但是,对于缺失值,其中 2 种方法会产生 不正确的结果。
***计算均值的正确方法。**
compute mean_a = mean(q1 to q9).
***计算均值 - 错误的方法 1。**
compute mean_b = (q1 + q2 + q3 + q4 + q5 + q6 + q7 + q8 + q9) / 9.
***计算均值 - 错误的方法 2。**
compute mean_c = sum(q1 to q9) / 9.
***检查结果。**
descriptives mean_a to mean_c.
结果
最后说明
在真实世界的数据中,缺失值很常见。它们通常不会在分析或编辑数据时引起很多麻烦,但在某些情况下会引起麻烦。如果缺失值有限,只需多加注意即可。仔细检查你的结果,并了解你在做什么。
感谢阅读。